package 字符串;

/**
 * @author ssh
 * @date 2025/9/1
 * @description
 * 给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
 *
 * 如果剩余字符少于 k 个，则将剩余字符全部反转。
 * 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
 *
 *
 * 示例 1：
 *
 * 输入：s = "abcdefg", k = 2
 * 输出："bacdfeg"
 * 示例 2：
 *
 * 输入：s = "abcd", k = 2
 * 输出："bacd"
 */
public class 反转字符串II {
    public String reverseStr(String s, int k) {
        char[] charArray = s.toCharArray();
        for (int i=0;i<charArray.length-1;i=i+2*k){
            int start= i;
            int end = Math.min(charArray.length - 1, start + k - 1);
            while (start<end){
                char temp=charArray[start];
                charArray[start]=charArray[end];
                charArray[end]=temp;
                start++;
                end--;
            }
        }
        return new String(charArray);
    }

    public static void main(String[] args) {
        // 测试代码
        String s = "abcdefg";
        int k = 2;
        反转字符串II solution = new 反转字符串II();
        String result = solution.reverseStr(s, k);
        System.out.println(result); // 输出: "bacdfeg"
    }
}
